/*
 * psg driver test program 
 */
#pragma seg(cseg)
#pragma seg(dseg)
#pragma seg(bseg)

#include <system.h>
#include <v93.h>
#include <libm.h>
#include <intlib.h>
#include <common.h>
#include <king.h>
#include "music.h"
#include "psgdrv.h"

extern unsigned char *MusicData[];  /* 演奏データ */

/* メインルーチン */
void
main(void)
{
  /* キャッシュオン */
  cache_enable();
  /* デバイスの初期化 */
  set_irq_level(0);
  IrqInit();
  init_timer();
  NTInit();
  /* パッド読み込みハンドラをＫポート割り込みに登録する */
  IrqSet(&int_pad,XINT_KP);
  set_get_pad_mode(0,KC_IN,1);
  /* パッドの初期化 */
  init_get_pad();
  /* HuC6272初期化 */
  KINGInit();
  RasterInit();
  KINGDispOff();
  /* 割り込み制御 */
  IrqOn(XINT_72);
  irq_enable();
  /* フロントセロファン設定 */
  NTFbCel(CEL_OFF);
  NTCelSet1A(0x888);
  /* 他画面表示オフ */
  dispoff(bg | spr | rain | bg1 | bg2 | bg3);
  NTFixc(0xff88);
  /* ＰＳＧドライバー初期化 */
  drvinit();
  /* 演奏データの登録 */
  dataset(MusicData);
  /* 演奏開始 */
  playstart();
  /* 永久ループ */
  while(1){
    /* ６０分の１秒待つ */
    VSyncWait();
    /* キー入力 */
    get_pad();
    /* Ⅰキーが押されたら最初から */
    if ((pad00.KD_TRG & KP_1) != 0){
        playstart();
    }
    /* Ⅱキーが押されたら止める */
    if ((pad00.KD_TRG & KP_2) != 0){
        playstop();
    }
  }
}
